package com.ssy.lingxi.marketing.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.marketing.model.bo.PfActivitySignUpPageBO;
import com.ssy.lingxi.marketing.model.vo.activity.request.*;
import com.ssy.lingxi.marketing.model.vo.activity.response.*;
import com.ssy.lingxi.marketing.model.vo.coupon.request.FilterSkuIdRequest;
import com.ssy.lingxi.marketing.model.vo.coupon.request.FilterSkuIdResponse;

import java.util.List;

/**
 * 平台活动报名服务类
 * @author ds, yzc
 * @version 2.0.0
 * @date 2021/8/22
 */
public interface IPlatformActivitySignUpService {

    /**
     * 平台营销活动查询 - 分页列表
     * @param loginUser 登录用户信息
     * @param pageVO 请求参数
     * @return 返回结果
     */
    Wrapper<PageData<PfActivitySignUpPageResp>> pageSummary(UserLoginCacheDTO loginUser, PfActivitySignUpPageReq pageVO);

    /**
     * 待提交审核报名资料 - 分页列表
     * @param loginUser 登录用户信息
     * @param pageVO 请求参数
     * @return 返回结果
     */
    Wrapper<PageData<PfActivitySignUpSubmitExamPageResp>> pageByToBeSubmit(UserLoginCacheDTO loginUser, PfActivitySignUpPageReq pageVO);

    /**
     * 待审核报名资料(一级) - 分页列表
     * @param loginUser 登录用户信息
     * @param pageVO 请求参数
     * @return 返回结果
     */
    Wrapper<PageData<PfActivitySignUpExamPageResp>> pageByToBeExamineStep1(UserLoginCacheDTO loginUser, PfActivitySignUpPageReq pageVO);

    /**
     * 待审核报名资料(二级)  - 分页列表
     * @param loginUser 登录用户信息
     * @param pageVO 请求参数
     * @return 返回结果
     */
    Wrapper<PageData<PfActivitySignUpExamPageResp>> pageByToBeExamineStep2(UserLoginCacheDTO loginUser, PfActivitySignUpPageReq pageVO);

    /**
     * 待提交报名资料  - 分页列表
     * @param loginUser 登录用户信息
     * @param pageVO 请求参数
     * @return 返回结果
     */
    Wrapper<PageData<PfActivitySignUpSubmitPageResp>> pageByToBeSubmitSignUp(UserLoginCacheDTO loginUser, PfActivitySignUpPageReq pageVO);

    /**
     * 平台营销活动查询 - 活动详情
     * @param loginUser 登录用户信息
     * @param id 请求参数
     * @return 返回结果
     */
    Wrapper<PfActivitySignUpDetailResp> detail(UserLoginCacheDTO loginUser, Long id);

    /**
     * 平台营销活动查询 - 活动详情 - 活动商品(分页)
     * @param loginUser 登录用户信息
     * @param pageVO 请求参数
     * @return 返回结果
     */
    Wrapper<PageData<PfActivitySignUpGoodsPageResp>> pageByActivityGoods(UserLoginCacheDTO loginUser, PfActivitySignUpGoodsPageReq pageVO);

    /**
     * 待提交审核报名资料 - 填写报名资料
     * @param loginUser 登录用户信息
     * @param pageVO 请求参数
     * @return 返回结果
     */
    Wrapper<Void> save(UserLoginCacheDTO loginUser, PfActivitySignUpAddReq pageVO);

    /**
     * 待提交审核报名资料 - 修改报名资料
     * @param loginUser 登录用户信息
     * @param pageVO 请求参数
     * @return 返回结果
     */
    Wrapper<Void> update(UserLoginCacheDTO loginUser, PfActivitySignUpUpdateReq pageVO);

    /**
     * 待提交审核报名资料 - 查询活动商品过滤的skuId
     * @param loginUser 登录用户信息
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<FilterSkuIdResponse> getFilterSkuId(UserLoginCacheDTO loginUser, FilterSkuIdRequest request);

    /**
     * 待提交审核报名资料 - 提交审核
     * @param loginUser 登录用户信息
     * @param submitReq 请求参数
     * @return 返回结果
     */
    Wrapper<Void> submitExamine(UserLoginCacheDTO loginUser, PfActivityExamineSubmitReq submitReq);

    /**
     * 待提交审核报名资料 - 批量提交
     * @param loginUser 登录用户信息
     * @param req 请求参数
     * @return 返回结果
     */
    Wrapper<Void> submitExamineBatch(UserLoginCacheDTO loginUser, PfActivitySingUpIdsReq req);

    /**
     * 审核报名资料(一级) - 审核
     * @param loginUser 登录用户信息
     * @param req 请求参数
     * @return 返回结果
     */
    Wrapper<Void> examineStep1(UserLoginCacheDTO loginUser, PfActivityExamineSignUpReq req);

    /**
     * 审核报名资料(一级) - 批量审核
     * @param loginUser 登录用户信息
     * @param req 请求参数
     * @return 返回结果
     */
    Wrapper<Void> examineStep1batch(UserLoginCacheDTO loginUser, PfActivitySingUpIdsReq req);

    /**
     * 审核报名资料(二级) - 审核
     * @param loginUser 登录用户信息
     * @param req 请求参数
     * @return 返回结果
     */
    Wrapper<Void> examineStep2(UserLoginCacheDTO loginUser, PfActivityExamineSignUpReq req);

    /**
     * 审核报名资料(二级) - 批量审核
     * @param loginUser 登录用户信息
     * @param req 请求参数
     * @return 返回结果
     */
    Wrapper<Void> examineStep2batch(UserLoginCacheDTO loginUser, PfActivitySingUpIdsReq req);

    /**
     * 待提交报名资料 - 提交
     * @param loginUser 登录用户信息
     * @param id 请求参数
     * @return 返回结果
     */
    Wrapper<Void> submitSignUp(UserLoginCacheDTO loginUser, Long id);

    /**
     * 待提交报名资料 - 批量提交
     * @param loginUser 登录用户信息
     * @param ids 请求参数
     * @return 返回结果
     */
    Wrapper<Void> submitSignUpBatch(UserLoginCacheDTO loginUser, List<Long> ids);
    /**
     * 平台营销活动执行 - 分页列表
     * @param loginUser 登录用户信息
     * @param pageVO 请求参数
     * @return 返回结果
     */
    PageData<PfActivitySignUpPageBO> pageExecuteByMerchant(UserLoginCacheDTO loginUser, PfActivitySignUpPageReq pageVO);
}
